AWS Batch のスポットインスタンスの配分戦略にスポット価格と中断率の両方を考慮するいい塩梅の戦略が追加されました
AWS Batch で複数のインスタンスタイプの中からスポットインスタンスを利用する際にスポット価格と、中断率の両方を考慮してインスタンスタイプを自動選択する配分戦略が追加されました。
スポットインスタンスで利用費を可能な限り安くしたいけど、キャパシティ不足による計算中断リスクはなるべく避けたいときに選択したい配分戦略です。
アップデートによる影響
従来まではスポットインスタンス専用に使える配分戦略はSPOT_CAPACITY_OPTIMIZED
のみでした。
今回のアップデートによりSPOT_PRICE_CAPACITY_OPTIMIZED
が追加されました。名前の間に_PRICE_
が増えています。
大きな変更点はスポットインスタンス専用の配分戦略あれば新たに追加された配分戦略が推奨とドキュメントに記載があります。
We recommend that you use SPOT_PRICE_CAPACITY_OPTIMIZED rather than SPOT_CAPACITY_OPTIMIZED in most instances. Allocation strategies - AWS Batch
配分戦略のデフォルトは引き続きBEST_FIT
です。BEST_FIT
戦略はもっとも低コストのインスタンスタイプを優先します。
スポットインスタンスは大幅割引受けられるとメリットのトレードオフで以下のリスクがあります。
- インスタンスが中断する可能性がある
- スポットプールの空キャパシティがなくなり、インスタンスを起動できないことがある
今回追加された配分戦略は中断される可能性がもっとも低く、価格が可能な限り低い選択します。スポットインスタンスで大幅割引を受けつつも、中断リスクをケアしてくれる賢い戦略です。
新配分戦略を使ってみた
AWS Batch のコンピューティング環境は EC2 を使用し、スポットインスタンスを使います。
配分戦略に今回のアップデートで追加されたSPOT_PRICE_CAPACITY_OPTIMIZED
を選択できるようになっています。
起動するインスタンスタイプは以下の 4 タイプをチョイスしました。
AZ ap-northeast-1a
におけるスポット料金を確認してみました。選択した 4 インスタンスの中では最安価がc6i.large
で、最高値はc6i.xlarge
でした。
今回は検証用にスポット料金を確認したap-northeast-1a
のサブネットでのみインスタンスを起動するように設定しました。
こちらのコンピューティング環境を利用して、ジョブを実行してどのインスタンスが起動してくるか確認してみます。
ジョブ実行結果
同時に 20 台インスタンスを起動するジョブの実行を終えた結果です。
インスタンスタイプ | 起動台数 | 割合 |
---|---|---|
c5.large | 5 | 25% |
c5.xlarge | 6 | 30% |
c6i.large | 4 | 20% |
c6i.xlarge | 5 | 25% |
ほぼほぼ均等に起動した結果となっています。
スポット利用費だとしてもlarge
とxlarge
では大きな差があります。単純に利用費が安いインスタンスだけの選択はしていませんね。
中断される可能性がもっとも低く、価格が可能な限り低い選択をするという配分戦略というだけあって、20 台のインスタンス同時起動は中断のリスク分散のため、各インスタンスタイプに分けたのかもしれません。
以上、新配分戦略を利用したインスタンスタイプの自動選択の確認でした。
おわりに
スポットインスタンスで最安価を目指すのではなく、中断リスクを考慮してスポットインスタンスなりの安定性を確保したいワークロードのときにはうってつけの配分戦略SPOT_PRICE_CAPACITY_OPTIMIZED
が追加されました。
本番環境でスポットインスタンスを活用し計算リソースのコストを抑えたサービスを展開には使えるのではないでしょうか。ちょうど計算機 as a Service の設計をしていたので私には嬉しいアップデートでした。
ちなみに 2022 年 11 月に Auto Scaling に追加されたいい塩梅の配分戦略が AWS Batch にもまわってきたのが今回のアップデートです。